// //typedef函数的使用

// #include<stdio.h>
// typedef int myint;
// typedef struct 
// {
// 	myint i;
// 	int x;
// 	int y;
// }po;
// int main(int argc, char const *argv[])
// {
// 	po p;
// 	p.i = 5;
// 	p.x = 10;
// 	p.y = 20;
// 	printf("%d\n",p.x);
// 	printf("%d\n",p.i);
// 	return 0;
// }


// //动态内存分配 malloc - 基本数据类型

// #include<stdio.h>
// #include<stdlib.h>
// #include<string.h>

// int main(int argc, char const *argv[])
// {
// 	int *p;
// 	char* c;
// 	p = (int*)malloc(sizeof(int));
// 	c = (char*)malloc(10);
// 	*p = 15;
// 	strcpy(c,"hello");
// 	printf("%d",*p);
// 	printf("%s",*c);
// 	free(p);
// 	free(c);

// 	return 0;
// }

// //动态内存分配 malloc - 字符型

// #include<stdio.h>
// #include<stdlib.h>
// #include<string.h>

// int main(int argc, char const *argv[])
// {
// 	char* c;
// 	c = (char*)malloc(10);
// 	strcpy(c,"hello");
// 	printf("%s",*c);
// 	free(c);

// 	return 0;
// }

// //动态内存分配 malloc - 数组

// #include <stdio.h>
// #include <stdlib.h>

// int main(int argc, char const *argv[]) {
//     // 动态分配内存
//     int *arr = (int*)malloc(5 * sizeof(int));

//     // 检查malloc是否成功
//     if (arr == NULL) {
//         printf("内存分配失败！\n");
//         return 1;  // 返回错误代码
//     }

//     // 给数组赋值
//     for (int i = 0; i < 5; i++) {
//         arr[i] = i;
//     }

//     // 打印数组内容
//     for (int i = 0; i < 5; i++) {
//         printf("%d\n", arr[i]);
//     }

//     // 释放内存
//     free(arr);
//     return 0;
// }

//动态内存分配 malloc - 结构体
#include<stdio.h>
#include <malloc.h>
int main(int argc, char const *argv[])
{
    typedef struct 
    {
        int x;
        int y;
    }po;
    po* p;
    p = (po*)malloc(sizeof(po));
    p -> x = 6;
    p -> y = 10;
    printf("%d %d",p->x,p->y);
    free(p);
    return 0;
}